第三週我們的區塊鏈列車加速通行,透過實際行動而非單純空談,而接下來這一節我們要來做這週的複習與總結。
一、虛擬機安裝
二、Merkle Tree
• 定義:用來表示Hash值的樹狀結構。
• 結構:基本為Binary Tree(二元樹)。
• 特點:每個中間節點(Node)都會標示一個 Hash 值。
• 發明人是 Ralph Merkle。
• 三種節點:
1.葉節點(Leaf Node):最底層,存放資料區塊的 Hash 值。
2.中間節點(Intermediate Node):由子節點組合再做Hash,表示過程節點。
3.根節點(Root Node):整棵樹的最上層,也叫Merkle Root,是終止節點。
三、Gas
一些Gas的重點整理:
1. 1 gwei = 0.000000001 ETH。
2. Wei 是 ETH 的最小單位。
3. gas 在每筆以太坊交易的明細裡都會出現。
4. 如果交易花很久就代表 gas 價錢設的太低了!
5.「Gas Limit」是指願意在交易上花費的最大量。
6. 礦工費為:Gas 單位 × 每單位 Gas 價格。
四、什麼是Solidity?
• 合約導向的程式語言。
• 很常拿來撰寫智能合約。
• 可以用 Remix 開發(網頁網站)。
• 可以搭配 MetaMask 錢包。
五、Solidity合約內容講解
-合約宣告
contract helloworld{
// 這就是宣告一個 helloworld 的合約,然後這裡可以輸入一些可愛的合約內容
}
-版本宣告
pragma solidity >=0.7.0 <0.9.0;
//意思是 0.7.0~0.9.0 之間的任何版本都可以執行這項合約。
-授權宣告
// SPDX-License-Identifier: GPL-3.0
如果不想要公開的話,可以把 GPL-3.0 改成 UNLICENSED。
-方法function
function functionname(參數1, 參數2) 可見度 可變性 returns(回傳的資料) {
}
// 回傳資料可有可無,取決於你要或不要回傳。
// 可見度與可變性一定要宣告
// 參數以及回傳值都可以是多個,要用逗號隔開
// functionname 不可以用保留字
function store(uint256 num) public {
number = num;
}
-可見度
• Private:私密的,不想被外面看到,也只能被自己呼叫。
• Public:公開的,可以被自己或外部的 function 呼叫。
• External:可以被外部合約直接呼叫,但不能被內部合約直接呼叫。
假如 function 叫做 x,不能直接呼叫 x,要呼叫 this.x()。
-可變性
• Pure:不會讀也不會寫 state。
• View:只讀不寫 state。
• Default:可讀也可寫 state。
八、Q&A複習題目
1.列舉兩項虛擬機的優點?
2.Merkle Tree Root 是使用---進行運算?
3.1 gwei = --- ETH?
4.ETH 的最小單位?
5.Solidity 是---導向語言?
6.將 Private、Public、External 依照可見度可見性排序。
答案
1.使用不同作業系統,以免病毒直接損害主機。
2.Hash。
3.0.000000001 ETH。
4.Wei。
5.合約導向。
6.Public > External > Private。
這章節做了第三週的複習與統整,恭喜大家完成第三週,而下一章節將進入Part4 Solidity實作。
可以用Q&A time一起複習~
第二十二天書中的語錄是:
堅持閱讀了三篇真的辛苦了,但相信你也已經接觸到許多新知識吧!有了理論基礎以及基礎實作,是不是更有成就感了呢!讓我們繼續堅持下去吧!